home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 94 / CD-ROM 94.iso / util / weban / setup.msi / Cabs.w23.cab / printreport.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2002-07-24  |  16.1 KB  |  457 lines

  1. <?xml version="1.0"?> 
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.  
  4.     <xsl:variable name="ScoreLookup">
  5.       <c score="0" url="Graphics/dash.gif" alttext="Check Not Performed"/>
  6.       <c score="1" url="Graphics/excl_red.gif" alttext="Unable to scan"/>
  7.       <c score="2" url="Graphics/x_red.gif" alttext="Check failed (critical)"/>
  8.       <c score="3" url="Graphics/x_gold.gif" alttext="Check failed (non-critical)"/>
  9.       <c score="4" url="Graphics/astrx.gif" alttext="Best practice"/>
  10.       <c score="5" url="Graphics/chek_grn.gif" alttext="Check passed"/>
  11.       <c score="6" url="Graphics/dash.gif" alttext="Check not performed"/>
  12.       <c score="7" url="Graphics/info.gif" alttext="Additional information"/>
  13.     </xsl:variable>
  14.     
  15.     <xsl:variable name="Assessment">
  16.       <c score="1" text="Incomplete Scan" longtext="Could not complete one or more requested checks."/>
  17.       <c score="2" text="Severe Risk" longtext="One or more critical checks failed."/>
  18.       <c score="3" text="Potential Risk" longtext="One or more non-critical checks failed."/>
  19.       <c score="4" text="Security FYIs" longtext=""/>
  20.       <c score="5" text="Strong Security" longtext="All checks were passed."/>
  21.     </xsl:variable>
  22.  
  23.     <xsl:variable name="FileName" select="'file name here'"></xsl:variable>
  24.     
  25.         <xsl:template match="SecScan">
  26.             <xsl:param name="assess" select="@Grade"/>    
  27.             <table>
  28.             <tr>
  29.                 <td class="reportsubheader" width="140">Computer name:</td>
  30.                 <td><xsl:value-of select="@Domain"/>\<xsl:value-of select="@Machine"/></td>
  31.             </tr>
  32.             <tr>
  33.                 <td class="reportsubheader" width="140">IP address:</td>
  34.                 <td><xsl:value-of select="@IP"/></td>
  35.             </tr>
  36.             <tr>
  37.                 <td class="reportsubheader" width="140">Security report name:</td>
  38.                 <td><xsl:value-of select="$FileName" /></td>
  39.             </tr>
  40.             <tr>
  41.                 <td class="reportsubheader" width="140">Scan date:</td>
  42.                 <td><xsl:value-of select="@Date"/></td>
  43.             </tr>
  44.             <xsl:choose>
  45.             <xsl:when test="@HotfixDataVersion">
  46.                   <tr>
  47.                     <td class="reportsubheader" width="140">Security Update database version:</td>
  48.                     <td><xsl:value-of select="@HotfixDataVersion"/></td>
  49.                 </tr>
  50.             </xsl:when>
  51.             </xsl:choose>    
  52.             <tr>
  53.                 <td class="reportsubheader" width="140">Security assessment:</td>
  54.                 <td><xsl:value-of select="document('')/*/xsl:variable[@name='Assessment']/c[@score=$assess]/@text"/></td>
  55.             </tr>
  56.             </table>
  57.             
  58.             
  59.             <xsl:choose>
  60.             <xsl:when test="Check[@Type='5']">
  61.                 <br />
  62.                 <div class="reportheader">Security Updates</div>
  63.                 <xsl:choose>
  64.                 <xsl:when test="Check[@Type='5'][@Cat='1']">
  65.                     <br />
  66.                     <table width="100%" style="MARGIN-BOTTOM: 20px;" border="0" cellpadding="0" cellspacing="0">
  67.                         <tr class="ReportListHeader">
  68.                             <td width="40" align="center">Score</td>
  69.                             <td width="40" align="left">Issue</td>
  70.                             <td>Result</td>
  71.                         </tr>
  72.                         <xsl:for-each select=".">
  73.                             <xsl:apply-templates select="Check[@Type='5'][@Cat='1']">
  74.                                 <xsl:sort order="sortorder" select="sortfield"/>
  75.                             </xsl:apply-templates>
  76.                         </xsl:for-each>
  77.                     </table>            
  78.                 </xsl:when>
  79.                 </xsl:choose>
  80.             </xsl:when>
  81.             </xsl:choose>
  82.             
  83.             
  84.             <xsl:choose>
  85.             <xsl:when test="Check[@Type='1']">
  86.                 <br />
  87.                 <div class="reportheader">Windows Scan Results</div>
  88.                 <xsl:choose>
  89.                 <xsl:when test="Check[@Type='1'][@Cat='1']">
  90.                     <br />
  91.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  92.                     <br />
  93.                     <table width="100%" style="MARGIN-BOTTOM: 20px;" border="0" cellpadding="0" cellspacing="0">
  94.                         <tr class="ReportListHeader">
  95.                             <td width="40" align="center">Score</td>
  96.                             <td width="40" align="left">Issue</td>
  97.                             <td>Result</td>
  98.                         </tr>
  99.                         <xsl:for-each select=".">
  100.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='1']">
  101.                                 <xsl:sort order="sortorder" select="sortfield"/>
  102.                             </xsl:apply-templates>
  103.                         </xsl:for-each>
  104.                     </table>            
  105.                 </xsl:when>
  106.                 </xsl:choose>
  107.                 <xsl:choose>
  108.                 <xsl:when test="Check[@Type='1'][@Cat='2']">
  109.                     <br />
  110.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  111.                     <br />
  112.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  113.                         <tr class="ReportListHeader">
  114.                             <td width="40" align="center">Score</td>
  115.                             <td width="40" align="left">Issue</td>
  116.                             <td>Result</td>
  117.                         </tr>
  118.                         <xsl:for-each select=".">
  119.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='2']">
  120.                                 <xsl:sort order="sortorder" select="sortfield"/>
  121.                             </xsl:apply-templates>
  122.                         </xsl:for-each>
  123.                     </table>
  124.                 </xsl:when>
  125.                 </xsl:choose>
  126.             </xsl:when>
  127.             </xsl:choose>
  128.  
  129.             <xsl:choose>
  130.             <xsl:when test="Check[@Type='3']">    
  131.                 <br />
  132.                 <div class="reportheader">Internet Information Services (IIS) Scan Results</div>
  133.                 <xsl:choose>
  134.                 <xsl:when test="Check[@Type='3'][@Cat='1']">
  135.                     <br />
  136.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  137.                     <br />
  138.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  139.                         <tr class="ReportListHeader">
  140.                             <td width="40" align="center">Score</td>
  141.                             <td width="40" align="left">Issue</td>
  142.                             <td>Result</td>
  143.                         </tr>
  144.                         <xsl:for-each select=".">
  145.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='1']">
  146.                                 <xsl:sort order="sortorder" select="sortfield"/>
  147.                             </xsl:apply-templates>
  148.                         </xsl:for-each>
  149.                     </table>            
  150.                 </xsl:when>
  151.                 </xsl:choose>
  152.                 <xsl:choose>
  153.                 <xsl:when test="Check[@Type='3'][@Cat='2']">
  154.                     <br />
  155.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  156.                     <br />
  157.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  158.                         <tr class="ReportListHeader">
  159.                             <td width="40" align="center">Score</td>
  160.                             <td width="40" align="left">Issue</td>
  161.                             <td>Result</td>
  162.                         </tr>
  163.                         <xsl:for-each select=".">
  164.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='2']">
  165.                                 <xsl:sort order="sortorder" select="sortfield"/>
  166.                             </xsl:apply-templates>
  167.                         </xsl:for-each>
  168.                     </table>
  169.                 </xsl:when>
  170.                 </xsl:choose>
  171.                 <xsl:choose>
  172.                 <xsl:when test="Check[@Type='3'][@Cat='4']">
  173.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  174.                         <tr class="ReportListHeader">
  175.                             <td width="40" align="center">Score</td>
  176.                             <td width="40" align="left">Issue</td>
  177.                             <td>Result</td>
  178.                         </tr>
  179.                         <xsl:for-each select=".">
  180.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='4']">
  181.                                 <xsl:sort order="sortorder" select="sortfield"/>
  182.                             </xsl:apply-templates>
  183.                         </xsl:for-each>
  184.                     </table>
  185.                 </xsl:when>
  186.                 </xsl:choose>
  187.             </xsl:when>
  188.             </xsl:choose>
  189.             
  190.  
  191.             <!-- One tag per SQL Instance, MBSA V1.1 and later -->
  192.             <xsl:choose>
  193.                 <xsl:when test="SQLInstance">
  194.                     <xsl:for-each select=".">
  195.                         <xsl:apply-templates select="SQLInstance"/>
  196.                     </xsl:for-each>
  197.                 </xsl:when>
  198.             </xsl:choose>
  199.  
  200.             <xsl:choose>
  201.             <xsl:when test="Check[@Type='2']">    
  202.                 <br />
  203.                 <div class="reportheader">SQL Server Scan Results</div>
  204.                 <xsl:choose>
  205.                 <xsl:when test="Check[@Type='2'][@Cat='1']">
  206.                     <br />
  207.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  208.                     <br />
  209.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  210.                         <tr class="ReportListHeader">
  211.                             <td width="40" align="center">Score</td>
  212.                             <td width="40" align="left">Issue</td>
  213.                             <td>Result</td>
  214.                         </tr>
  215.                         <xsl:for-each select=".">
  216.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  217.                                 <xsl:sort order="sortorder" select="sortfield"/>
  218.                             </xsl:apply-templates>
  219.                         </xsl:for-each>
  220.                     </table>            
  221.                 </xsl:when>
  222.                 </xsl:choose>
  223.                 <xsl:choose>
  224.                 <xsl:when test="Check[@Type='2'][@Cat='2']">
  225.                     <br />
  226.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  227.                     <br />
  228.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  229.                         <tr class="ReportListHeader">
  230.                             <td width="40" align="center">Score</td>
  231.                             <td width="40" align="left">Issue</td>
  232.                             <td>Result</td>
  233.                         </tr>
  234.                         <xsl:for-each select=".">
  235.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  236.                                 <xsl:sort order="sortorder" select="sortfield"/>
  237.                             </xsl:apply-templates>
  238.                         </xsl:for-each>
  239.                     </table>
  240.                 </xsl:when>
  241.                 </xsl:choose>
  242.                 <xsl:choose>
  243.                 <xsl:when test="Check[@Type='2'][@Cat='4']">
  244.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  245.                         <tr class="ReportListHeader">
  246.                             <td width="40" align="center">Score</td>
  247.                             <td width="40" align="left">Issue</td>
  248.                             <td>Result</td>
  249.                         </tr>
  250.                         <xsl:for-each select=".">
  251.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  252.                                 <xsl:sort order="sortorder" select="sortfield"/>
  253.                             </xsl:apply-templates>
  254.                         </xsl:for-each>
  255.                     </table>
  256.                 </xsl:when>
  257.                 </xsl:choose>
  258.             </xsl:when>
  259.             </xsl:choose>
  260.             
  261.             <xsl:choose>
  262.             <xsl:when test="Check[@Type='4']">    
  263.                 <br />
  264.                 <div class="reportheader">Desktop Application Scan Results</div>
  265.                 <xsl:choose>
  266.                 <xsl:when test="Check[@Type='4'][@Cat='1']">
  267.                     <br />
  268.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  269.                     <br />
  270.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  271.                         <tr class="ReportListHeader">
  272.                             <td width="40" align="center">Score</td>
  273.                             <td width="40" align="left">Issue</td>
  274.                             <td>Result</td>
  275.                         </tr>
  276.                         <xsl:for-each select=".">
  277.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='1']">
  278.                                 <xsl:sort order="sortorder" select="sortfield"/>
  279.                             </xsl:apply-templates>
  280.                         </xsl:for-each>
  281.                     </table>            
  282.                 </xsl:when>
  283.                 </xsl:choose>
  284.                 <xsl:choose>
  285.                 <xsl:when test="Check[@Type='4'][@Cat='2']">
  286.                     <br />
  287.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  288.                     <br />
  289.                     <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  290.                         <tr class="ReportListHeader">
  291.                             <td width="40" align="center">Score</td>
  292.                             <td width="40" align="left">Issue</td>
  293.                             <td>Result</td>
  294.                         </tr>
  295.                         <xsl:for-each select=".">
  296.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='2']">
  297.                                 <xsl:sort order="sortorder" select="sortfield"/>
  298.                             </xsl:apply-templates>
  299.                         </xsl:for-each>
  300.                     </table>
  301.                 </xsl:when>
  302.                 </xsl:choose>
  303.             </xsl:when>
  304.             </xsl:choose>
  305.             
  306.         </xsl:template>
  307.     
  308.     <xsl:template match="Check">
  309.         <xsl:param name="score" select="@Grade"/>
  310.         
  311.             <xsl:variable name="bgcolor">
  312.             <xsl:choose>
  313.                 <xsl:when test="(position() mod 2) = 1">#8caae6</xsl:when>
  314.                 <xsl:otherwise>#CECFF6</xsl:otherwise>
  315.             </xsl:choose>
  316.             </xsl:variable>
  317.             <tr bgcolor="{$bgcolor}">
  318.                 <td align="center" valign="middle">
  319.                     <xsl:choose>
  320.                       <xsl:when test="@Cat='2'">
  321.                         <xsl:choose>
  322.                           <xsl:when test="@ID='121'">
  323.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  324.                            </xsl:when>
  325.                           <xsl:when test="@ID='10121'">
  326.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  327.                            </xsl:when>
  328.                           <xsl:when test="@ID='101'">
  329.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  330.                            </xsl:when>
  331.                           <xsl:when test="@ID='10101'">
  332.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  333.                            </xsl:when>
  334.                           <xsl:otherwise>
  335.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@url}" />
  336.                           </xsl:otherwise>
  337.                         </xsl:choose>
  338.                       </xsl:when>
  339.                       <xsl:otherwise>
  340.                         <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@url}" />    
  341.                       </xsl:otherwise>
  342.                     </xsl:choose>    
  343.                 </td>
  344.                 <td width="75"><xsl:value-of select="@Name"/></td>
  345.                 <td> 
  346.                     <TABLE width="100%">  
  347.                       <TR>
  348.                         <TD align="left" colspan="3"><xsl:value-of select="Advice"/></TD>
  349.                       </TR>
  350.                         <xsl:choose>
  351.                           <xsl:when test="Detail">
  352.                             <TR>
  353.                             <TD>
  354.                             <table width="100%" border="0" cellpadding="0" cellspacing="0" style="padding-left: 10px; padding-right: 10px;">
  355.                                 <tr class="ReportListHeader">
  356.                                     <xsl:for-each select="Detail/Head/Col">
  357.                                         <td Nowrap="true">
  358.                                         <xsl:value-of select="."/>
  359.                                         </td>
  360.                                     </xsl:for-each>
  361.                                 </tr>
  362.                                 <xsl:for-each select="Detail">
  363.                                     <xsl:apply-templates select="Row">
  364.                                     </xsl:apply-templates>
  365.                                 </xsl:for-each>
  366.                             </table>
  367.                             </TD>
  368.                             </TR>
  369.                           </xsl:when>
  370.                         </xsl:choose>    
  371.                     </TABLE>
  372.                     <br/>
  373.                 </td>
  374.             </tr>
  375.     </xsl:template>
  376.     
  377.     <xsl:template match="Row">
  378.         <xsl:param name="score" select="@Grade"/>
  379.             <tr>
  380.                 <xsl:for-each select="Col">
  381.                 <td valign="top">
  382.                  <xsl:choose>
  383.                   <xsl:when test="@URL">
  384.                     <A href="{@URL}"><xsl:value-of select="."/></A>
  385.                   </xsl:when>
  386.                   <xsl:otherwise>
  387.                     <xsl:value-of select="."/>
  388.                   </xsl:otherwise>
  389.                 </xsl:choose>    
  390.                 </td>
  391.                 </xsl:for-each>
  392.             </tr>
  393.     </xsl:template>
  394.     
  395.     <!-- SQL Instance section -->
  396.     <xsl:template match="SQLInstance">
  397.         <br />
  398.         <div class="reportheader">SQL Server Scan Results: Instance <xsl:value-of select="@Name"/></div>
  399.         <xsl:choose>
  400.         <xsl:when test="Check[@Type='2'][@Cat='1']">
  401.             <br />
  402.             <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Vulnerabilities</div>
  403.             <br />
  404.             <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  405.                 <tr class="ReportListHeader">
  406.                     <td width="40" align="center">Score</td>
  407.                     <td width="40" align="left">Issue</td>
  408.                     <td>Result</td>
  409.                 </tr>
  410.                 <xsl:for-each select=".">
  411.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  412.                         <xsl:sort order="sortorder" select="sortfield"/>
  413.                     </xsl:apply-templates>
  414.                 </xsl:for-each>
  415.             </table>            
  416.         </xsl:when>
  417.         </xsl:choose>
  418.         <xsl:choose>
  419.         <xsl:when test="Check[@Type='2'][@Cat='2']">
  420.             <br />
  421.             <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  422.             <br />
  423.             <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  424.                 <tr class="ReportListHeader">
  425.                     <td width="40" align="center">Score</td>
  426.                     <td width="40" align="left">Issue</td>
  427.                     <td>Result</td>
  428.                 </tr>
  429.                 <xsl:for-each select=".">
  430.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  431.                         <xsl:sort order="sortorder" select="sortfield"/>
  432.                     </xsl:apply-templates>
  433.                 </xsl:for-each>
  434.             </table>
  435.         </xsl:when>
  436.         </xsl:choose>
  437.         <xsl:choose>
  438.         <xsl:when test="Check[@Type='2'][@Cat='4']">
  439.             <table width="100%" style="MARGIN-BOTTOM: 20px" border="0" cellpadding="0" cellspacing="0">
  440.                 <tr class="ReportListHeader">
  441.                     <td width="40" align="center">Score</td>
  442.                     <td width="40" align="left">Issue</td>
  443.                     <td>Result</td>
  444.                 </tr>
  445.                 <xsl:for-each select=".">
  446.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  447.                         <xsl:sort order="sortorder" select="sortfield"/>
  448.                     </xsl:apply-templates>
  449.                 </xsl:for-each>
  450.             </table>
  451.         </xsl:when>
  452.         </xsl:choose>
  453.     </xsl:template>
  454.             
  455.  
  456.     
  457. </xsl:stylesheet>